package org.itsolutions.javaBackup.ioc;

import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import org.itsolutions.javaBackup.spi.EModule;

import com.google.inject.BindingAnnotation;

/**
 * Generic injection identifier.
 * @author Tomas Fecko
 */
@Retention(RUNTIME)
@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD })
@BindingAnnotation
public @interface InjectionID {
	
	/**
	 * Class implementing the service. 
	 * @return 
	 */
	Class<?> value() default InjectionIDImpl.DefaultInjectionIDClass.class;
	
	/**
	 * Either this String id or class can be used to identificate the ServiceWithLifecycle.
	 * @return
	 */
	String id() default InjectionIDImpl.DEFAULT_STRING;
	
	/**
	 * Another identificator for injection point.
	 * @return
	 */
	EModule module() default EModule.UNSPECIFIED;
}
